﻿//namespace VIA.SiMoJi.Domain.SoftPLC
//{
//    public interface IOutPutNode
//    {
//        public string Annotation { get; }
//        public void SetOutput(bool condition);
//    }

//    /// <summary>
//    /// 位输出
//    /// </summary>
//    public class BitOupPut : IOutPutNode
//    {
//        public string Annotation => Output?.Annotation;
//        public IBitDataRegister Output { get; set; }
//        public IHardWare HardWare { get; set; }
//        private BitOupPut() { }
//        public BitOupPut(IBitDataRegister bitDataRegister) { Output = bitDataRegister; }
//        public BitOupPut(IHardWare hardWare) { HardWare = hardWare; }
//        public BitOupPut(IBitDataRegister bitDataRegister, IHardWare hardWare) { Output = bitDataRegister; HardWare = hardWare; }
//        public void SetOutput(bool condition)
//        {
//            try
//            {
//                short data = condition ? (short)1 : (short)0;
//                if (HardWare != null)
//                {
//                    HardWare.SetOutput(Output, data);
//                }
//                else
//                {
//                    Output?.SetBitData(data);
//                }
//            }
//            catch (Exception)
//            {
//                throw;
//            }
//        }
//    }

//    /// <summary>
//    /// 位置位
//    /// </summary>
//    public class BitSetOutput : IOutPutNode
//    {
//        public string Annotation => Output?.Annotation;
//        public IBitDataRegister Output { get; set; }
//        public IHardWare HardWare { get; set; }
//        private BitSetOutput() { }
//        public BitSetOutput(IBitDataRegister bitDataRegister) { Output = bitDataRegister; }
//        public BitSetOutput(IHardWare hardWare) { HardWare = hardWare; }
//        public BitSetOutput(IBitDataRegister bitDataRegister, IHardWare hardWare) { Output = bitDataRegister; HardWare = hardWare; }
//        public void SetOutput(bool condition)
//        {
//            try
//            {
//                if (condition)
//                {
//                    if (HardWare != null)
//                        HardWare.SetOutput(Output, 1);
//                    else
//                        Output?.SetBitData(1);
//                }
//            }
//            catch (Exception)
//            {
//                throw;
//            }
//        }
//    }

//    /// <summary>
//    /// 位复位
//    /// </summary>
//    public class BitResetOupPut : IOutPutNode
//    {
//        public string Annotation => Output?.Annotation;
//        public IBitDataRegister Output { get; set; }
//        public IHardWare HardWare { get; set; }
//        private BitResetOupPut() { }
//        public BitResetOupPut(IBitDataRegister bitDataRegister) { Output = bitDataRegister; }
//        public BitResetOupPut(IHardWare hardWare) { HardWare = hardWare; }
//        public BitResetOupPut(IBitDataRegister bitDataRegister, IHardWare hardWare) { Output = bitDataRegister; HardWare = hardWare; }
//        public void SetOutput(bool condition)
//        {
//            try
//            {
//                if (condition)
//                {
//                    if (HardWare != null)
//                        HardWare.SetOutput(Output, 0);
//                    else
//                    {
//                        Output?.SetBitData(0);
//                    }
//                }
//            }
//            catch (Exception)
//            {
//                throw;
//            }
//        }
//    }
//}
